package com.grape.dto;

import com.grape.constants.Constants;
import com.grape.utils.BigDecimalUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.math.RoundingMode;


@Data
public class CategoryMoneyDTO {

    /** id */
    @ApiModelProperty(value = "id")
    private String id;

    /** 分类app图标 */
    @ApiModelProperty(value = "分类app图标")
    private String appIcon;

    /** 分类名字 */
    @ApiModelProperty(value = "分类名字")
    private String name;

    /** 金额 */
    @ApiModelProperty(value = "金额")
    private Double money;

    /** 预算 */
    @ApiModelProperty(value = "预算")
    private BigDecimal budget;

    /** 比例（支出；预算，收入：占百分比） */
    @ApiModelProperty(value = "预算比例")
    private Double ratio;

    public void initRatio(BigDecimal total, String type) {
        // 收入类型，比例 = 金额 / 总支出金额
        // 支出类型，比例 = 金额 / 预算金额
        if (this.money == 0) {
            this.ratio = 0.0;
            return;
        }
        if (Constants.CATEGORY_TYPE_INCOME.equals(type)) {
            this.ratio = BigDecimalUtil.getDoubleValue(BigDecimalUtil.div(BigDecimal.valueOf(this.money), total).setScale(2, RoundingMode.HALF_UP));
        } else {
            this.ratio = BigDecimalUtil.getDoubleValue(BigDecimalUtil.div(BigDecimal.valueOf(this.money), this.budget).setScale(2, RoundingMode.HALF_UP));
        }
    }
}
